/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Compilador.Lexico.Automatos;

import java.util.HashMap;

/**
 *
 * @author Rafa
 */
public class EstadoAutomato {

    protected boolean isEstadoFinal;
    protected HashMap<String, EstadoAutomato> transicoesAutomatos;
    protected boolean isLoop;
    protected EstadoAutomato estadoDefault;
     private String nome;


    public EstadoAutomato(boolean isEstadoFinal, boolean isLoop,String nome) {
        this.isEstadoFinal = isEstadoFinal;
        this.transicoesAutomatos = new HashMap<String, EstadoAutomato>();
        this.isLoop = isLoop;
        this.nome = nome;
        this.estadoDefault = null;
    }

    public EstadoAutomato getEstadoDefault() {
        return estadoDefault;
    }

    public void setEstadoDefault(EstadoAutomato estadoDefault) {
        this.estadoDefault = estadoDefault;
    }
    
    

    public void addTransicao(char simbolo, EstadoAutomato estadoAtingido) {
        this.transicoesAutomatos.put(String.valueOf(simbolo), estadoAtingido);
      
    }

    public String getNome() {
        return nome;
    }
    
    

    public EstadoAutomato getEstado(char simbolo) {
        if (transicoesAutomatos.containsKey(String.valueOf(simbolo))) {
            return transicoesAutomatos.get(String.valueOf(simbolo));

        } else if (this.isLoop) {
            return this;
        }
        else return estadoDefault;
    }
}
